home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
embedded
/
m68k
/
tutor.arc
/
DUMP.SA
< prev
next >
Wrap
Text File
|
1990-01-05
|
6KB
|
157 lines
DUMP IDNT 1,1 DU Dump "S-Records" 05/10/82
XDEF DUCMD
XDEF DUMPTEMP
SPC 1
XREF FIXBUF
XREF FNEXTF
XREF GETA
XREF MACSBUG
XREF OUT1CR
XREF.S OUTTO 1,1
XREF PNT2HX
XREF PNT4HX
XREF PNT6HX
XREF P2PHY
XREF SCANPORT
XREF SYNTAX
PAGE
SECTION.S 0
DUMPTEMP DS.B 80 HEADER TEMP BUFFER
SECTION 11
* ***DUMP*** DUMP 'S' RECORDS
* FORMAT: DU ADDRESS1 ADDRESS2 [TEXT....]
*
DUCMD DS 0
BSR SCANPORT SEE WHERE TO SEND OUTPUT (DUMMY CALL)
MOVE.L OUTTO,D6 SAVE OUTTO FOR ACTUAL S-RECORD DUMP
CLR.L OUTTO OVERRIDE SCANPORT CALL
LEA SYNTAX(PC),A0 WHERE TO GO IF NO PARAMTERS
BSR FNEXTF FIND NEXT FIELD
BSR GETA GET ADDRESS1
MOVE.L D0,A3 A3 = BEGIN ADDRESS
SPC 1
BSR FNEXTF
BSR GETA GET ADDRESS2
MOVE.L D0,A4 A4 = END ADDRESS
SPC 1
* PROCESS HEADER
LEA PUNCH5(PC),A0 WHERE TO GO IF NO HEADER
BSR FNEXTF LOOK FOR HEADER
PUNCH5 DS 0
SPC 1
* MOVE TEXT TO 'TEMP STORAGE'
LEA DUMPTEMP,A2
MOVE.L A2,D5 D5 = START OF TEXT
PUM11 CMP.L A5,A6
BEQ.S PUM13
MOVE.B (A5)+,(A2)+ MOVE
BRA PUM11
PUM13 EXG.L A2,D5 D5 = END OF TEXT +1
SPC 1
* DISPLAY ADDRESSES
MOVE.L A3,A0
MOVE.L A4,A1
BSR P2PHY DISPLAY TWO ADDRESSES
SPC 1
* INSURE END EQUAL GREATER THAN BEG
CMP.L A3,A4
BCS SYNTAX
SPC 1
MOVE.L D6,OUTTO RESTORE OPTIONAL DESTINATION OF DUMP
SPC 1
* FINISH PROCESSING HEADER
* A2 = START OF TEXT
BSR FIXBUF A5,A6=#BUFFER
MOVE.L #2,D6 THE BYTE COUNT
CLR.L D4 CLEAR THE CHECKSUM
MOVE.L #'S0??',(A6)+ START OF S RECORD
MOVE.L #'0000',(A6)+ DUMMY ADDRESS
MORES0 CMP.L D5,A2 SEE IF AT END OF TEXT
BGE.S ENDS0 WHERE TO GO WHEN ALL CHARACTERS USED
ADD.L #1,D6 ANOTHER BYTE
SPC 1
MOVE.B (A2)+,D0 GET ANOTHER BYTE OF TEXT
SPC 1
ADD.L D0,D4 FOR CHECKSUM
BSR PNT2HX PUT IT IN BUFFER
BRA MORES0
ENDS0 DS 0
SPC 1
BSR PNTSREC GO PRINT THE 'S' RECORD
MOVE A3,A2 A2 WILL SCAN BETWEEN A3-A4
* DO ANOTHER 'S' RECORD
MORESP BSR FIXBUF A5,A6=#BUFFER
CLR.L D4 CLEAR CHECKSUM REGISTER
MOVE.L A3,D0 READY TO PRINT ADDRESS
MOVE.L A3,D1 GET READY TO AND ADDRESS
MOVE.L #$10,D3 MAXIMUM BYTES ON S REC LINE
ADD.L D3,D1 INSURE END OF LINE ADDRESS IS MAX
AND.L #$FF0000,D1 SEE IF 3 BYTE ADDRESS
BNE.S S2REC WHERE TO GO IF 3 BYTES NEEDED
MOVE.L #'S1??',(A6)+ PUSH
MOVE A3,D0 SET UP TO PRINT 2 BYTE ADDRESS
BSR PNT4HX PRINT 4 HEX CHAR ADDRESS
MOVE.L #2,D6 BYTE COUNT
MOVE.W A3,D0 FIX UP CHECKSUM
ADD.B D0,D4 LOW BYTE
ASR #8,D0 SHIFT IT OVER
ADD.B D0,D4 HIGH BYTE OF ADDRESS
BRA.S PNCA3 GO PUNCH A LINE
SPC 1
S2REC MOVE.L #'S2??',(A6)+ PUSH
BSR PNT6HX PRINT 6 HEX CHAR ADDRESS
MOVE.L #3,D6 BYTE COUNT
MOVE.L A3,D0 FIX UP CHECKSUM
ADD.B D0,D4 LOW BYTE
ASR #8,D0 SHIFT IT OVER
ADD.B D0,D4 MIDDLE BYTE
SWAP D0 SET UP FOR HIGH BYTE
ADD.B D0,D4 ADD HIGH BYTE
PNCA3 CMP.L A4,A3 SEE IF AT ENDING ADDRESS
SPC 1
* END OF FILE
BLE.S A3OUT WHERE TO GO IF BELOW OR AT END ADDRESS
BSR.S PNTSRECX END IT BY PRINTING LAST RECORD
BSR FIXBUF A5,A6=#BUFFER
CLR.L D4 CLEAR THE CHECKSUM
MOVE.L #'S9??',(A6)+ MOVE TO PRINT BUFFER
MOVE.L #'0000',(A6)+ MOVE '0000' TO PRIT BUFFER
MOVE.L #2,D6 BYTE COUNT
BSR.S PNTSREC PRINT 'S9' END-OF-FILE RECORD
BRA MACSBUG REENTER MACSBUG
SPC 1
A3OUT MOVE.B (A3)+,D0 GRAB THE BYTE FROM MEMORY
ADD.W D0,D4 ADD TO CHECKSUM
ADD.W #1,D6 BUMP THE BYTE COUNT
ADD.L #1,A1 ADD TO COUNT OF BYTES PROCESSED
BSR PNT2HX PUT THE HEX IN THE PRINT BUFFER
SUB.L #1,D3 COUNT DOWN CHAR TO GO IN LINE
BNE PNCA3
BSR.S PNTSREC END OF LINE-PUNCH IT
BRA MORESP GO FIX UP NEXT LINE
SPC 1
* FIX UP & PRINT THE 'S' RECORD/LINE
*
PNTSRECX CMP.W #0,A1 SEE IF ANY CHAR MOVED
BEQ.S PNTSRTS NO CHAR MOVED
SPC 1
PNTSREC ADD #1,D6 ONE MORE BYTE (CHECKSUM)
ADD.W D6,D4 ADD BYTE COUNT TO CHECKSUM
NOT.B D4 COMPLIMENT THE CHECKSUM
MOVE.L D4,D0 READY FOR PRINT-HEX
BSR PNT2HX PUT CHECKSUM IN RECORD
MOVE.L A6,D7 SAVE FOR THE MOMENT
MOVE.L A5,A6 START OF BUFFER
ADD.L #2,A6 BYPASS RECORD TYPE (4 CHAR)
MOVE.B D6,D0 SET UP BYTE COUNT FOR PNTHEX ROUTINE
BSR PNT2HX PUT THE BYTE COUNT IN THE PRINT BUFFER
MOVE.L D7,A6 RESTORE REAL END OF BUFFER
BSR OUT1CR DO THE ACTUAL DISPLAY/PUNCH
SUB.L A1,A1 CLEAR COUNTER OF BYTES PROCESSED
PNTSRTS RTS
SPC 3
END